package day03;
/**
 * 运算符（6种）
 * @author XingHaiYang
 * @date 2022/9/5 14:04
 */
public class OperDemo {
    public static void main(String[] args) {
        /**
         * 01 算数运算符：+、-、*、/、%、++、--
         */
        /*
        * 1 %:取模/取余，余数为0即为整除
        * */
        System.out.println(5%2); //1，商2余1
        System.out.println(8%2); //0，商4余0----整除
        System.out.println(2%8); //2，商0余2
        /*
        * 2 ++/--:自增1/自减1，可在变量前也可在变量后
        * 单独使用时，在前在后都一样
        * 被使用时，在前在后不一样
        * a++的值为a----------(a--的值为a)
        * ++a的值为a+1--------(--a的值为a-1)
        * */
        //演示++单独使用
        int a=5,b=5;
        a++; //相当于a=a+1
        ++b; //相当于b=b+1
        System.out.println(a); //6
        System.out.println(b); //6
        //演示++被使用
        int a1=5,b1=5;
        int c1 = a1++; //1)将a++的值5赋值给c  2)a自增1变为6
        int d1 = ++b1; //1)将++b的值6赋值给d  2)b自增1变为6
        System.out.println(a1); //6
        System.out.println(b1); //6
        System.out.println(c1); //5
        System.out.println(d1); //6
        //演示--单独使用:
        int a2=5,b2=5;
        a2--; //相当于a=a-1
        --b2; //相当于b=b-1
        System.out.println(a2); //4
        System.out.println(b2); //4
        //演示--被使用:
        int a3=5,b3=5;
        int c3 = a3--; //1)将a--的值5赋值给c  2)a自减1变为4
        int d3 = --b3; //1)将--b的值4赋值给d  2)b自减1变为4
        System.out.println(a3); //4
        System.out.println(b3); //4
        System.out.println(c3); //5
        System.out.println(d3); //4

        /**
         * 02 关系：>、<、>=、<=、==、!=
         * 1 >(大于)、<(小于)、>=(大于或等于)、<=(小于或等于)、==(等于)、!=(不等于)
         * 2 关系运算的结果为boolean型，关系成立则为true，关系不成立则为false
         */
        int a4=5,b4=10,c4=5;
        boolean b44 = a4>b4;
        System.out.println(b44);   //false
        System.out.println(c4<b4);  //true
        System.out.println(a4>=c4); //true
        System.out.println(a4<=b4); //true
        System.out.println(a4==c4); //true
        System.out.println(a4!=c4); //false
        System.out.println(a4+c4>b4);  //false
        System.out.println(a4%2==0); //false
        System.out.println(a4++>5); //false--------a4自增1变为6
        System.out.println(a4++>5); //true---------a4自增1变为7

        /**
         * 03 逻辑：&&、||、!
         * 逻辑运算是建立在关系运算的基础之上的,逻辑运算的结果也是boolean型
         */
        /*
        * 1 &&：短路与(并且)，两边都为真则为真，见false则false,当第1个条件为false时，则发生短路(后面的不执行了)
        * */
        int a5=5,b5=10,c5=5;
        boolean b55 = b5>=a5 && b5<c5;
        System.out.println(b55);          //true&&false=false
        System.out.println(b5<=c5 && b5>a5); //false&&true=false
        System.out.println(a5==b5 && c5>b5); //false&&false=false
        System.out.println(b5!=c5 && a5<b5); //true&&true=true
        //演示短路:
        boolean b555 = a5>b5 && c5++>2;
        System.out.println(b555); //false
        System.out.println(c5);  //5，发生短路了
        /*
        * 2 ||：短路或(或者)，有真则为真，见true则true,
        * 当第1个条件为true时，则发生短路(后面的不执行了)
        * */
        int a6=5,b6=10,c6=5;
        System.out.println(b6>=a6 || b6<c6); //true||false=true
        System.out.println(b6<=c6 || b6>a6); //false||true=true
        System.out.println(b6!=c6 || a6<b6); //true||true=true
        System.out.println(a6==b6 || c6>b6); //false||false=false
        //演示短路:
        boolean b66 = a6<b6 || c6++>2;
        System.out.println(b66); //true
        System.out.println(c6);  //5，发生短路了
        /*
        * 3 !：逻辑非(取反)，非真则假，非假则真
         * */
        int a7=5,b7=10,c7=5;
        boolean b77 = !(a7<b7);
        System.out.println(b77);     //!true=false
        System.out.println(!(a7>b7)); //!false=true

        /**
         * 04 赋值：=、+=、-=、*=、/=、%=
         * 简单赋值运算符：=
         * 扩展赋值运算符：+=,-=,*=,/=,%=
         * 注意:扩展赋值运算符自带强转功能
         */
        int a8 = 5;
        a8 += 10; //相当于a8=(int)(a8+10)
        System.out.println(a8); //15
        a8 *= 2; //相当于a8=(int)(a8*2)
        System.out.println(a8); //30
        a8 /= 6; //相当于a8=(int)(a8/6)
        System.out.println(a8); //5
        //小面试题:
        short s = 5;
        //s = s+10; //编译错误，需强转，改为:s=(short)(s+10);
        s += 10; //相当于:s=(short)(s+10);

        /**
         * 05 字符串连接：+
         * 若两边为数字，则做加法运算
         * 若两边出现了字符串，则做字符串连接
         * 任何类型的数据只要和字符串连接，结果一定是字符串类型
         */
        int age = 38;
        System.out.println("age="); //age=
        System.out.println(age);    //38
        System.out.println("age="+age); //age=38
        System.out.println("我的年龄是"+age); //我的年龄是38
        System.out.println("我今年"+age+"岁了"); //我今年38岁了

        String name = "WKJ";
        System.out.println("name="+name); //name=WKJ
        System.out.println("大家好，我叫"+name); //大家好，我叫WKJ
        System.out.println("大家好，我叫"+name+"，今年"+age+"岁了"); //大家好，我叫WKJ，今年38岁了

        System.out.println(10+20+""+30); //3030-----------String
        System.out.println(""+10+20+30); //102030---------String
        System.out.println(10+20+30+""); //60-------------String

        /**
         * 06 条件/三目：
         * 1 语法：boolean?数1:数2
         * 2 执行过程：
         * ① 整个条件运算是有值的，它的值要么是?号后的数1，要么是:号后的数2
         * ② 计算boolean的值:
         * 若为true，则整个表达式的值为?号后的数1
         * 若为false，则整个表达式的值为:号后的数2
         */
        int num = 5;
        int flag = num>0?1:-1;
        System.out.println(flag); //1

        int a9=8,b9=55;
        int max = a9>b9?a9:b9;
        System.out.println("max="+max); //max=55









    }
}
